#构建静态库
message(STATUS "src This is BINARY dir " ${PROJECT_BINARY_DIR})
message(STATUS "src This is SOURCE dir " ${PROJECT_SOURCE_DIR})

# 定义源文件列表
AUX_SOURCE_DIRECTORY(. SRC_LIST)

# 指定最终生成的可执行文件的路径
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

# 指定生成目标 目标名字随便写；${SRC_LIST}代表前面定义的源文件列表变量
# 构建静态库
#ADD_LIBRARY(math ${SRC_LIST})

# 构建动态库
#ADD_LIBRARY(math MODULE ${SRC_LIST})
#ADD_LIBRARY(math SHARED ${SRC_LIST}) #这个会变成 dylib，建议用上一行的 MODULE

# 同时构建动态库和静态库
# 指定生成目标 目标名字随便写；${SRC_LIST}代表前面定义的源文件列表变量
#ADD_LIBRARY(math MODULE ${SRC_LIST})
## 指定静态库名
#ADD_LIBRARY(math_static STATIC ${SRC_LIST})
## 改变最终生成的静态库的名字
#SET_TARGET_PROPERTIES(math_static PROPERTIES OUTPUT_NAME math)
## 获取指定构建目标的指定属性的值；这里获取math_static的属性OUTPUT_NAME值赋值给OUTPUT_VALUE变量
#GET_TARGET_PROPERTY(OUTPUT_VALUE math_static OUTPUT_NAME)
#MESSAGE(STATUS "This is the math_static OUTPUT_NAME:" ${OUTPUT_VALUE})

## 构建动态库时添加版本号
## 指定生成目标 目标名字随便写；${SRC_LIST}代表前面定义的源文件列表变量
ADD_LIBRARY(math SHARED ${SRC_LIST})
## 给动态库添加版本号(VERSION 指代动态库版本，SOVERSION 指代API版本。)
SET_TARGET_PROPERTIES(math PROPERTIES VERSION 1.2 SOVERSION 1)
